package shaka.db.face;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;

/**
 * ResultSet 處理每筆資料時的 callback
 * 
 * @author ddchien 2012.07.16
 * 
 */
public interface IDbQryCB {

	/**
	 * 通知 callback 即將開始進行 result each row
	 */
	public void start();

	/**
	 * 執行Result each row. 所有的查出資料應該要即時清除，避免佔用記憶體空間，交給 callback 自行控制
	 * 
	 * @param meta
	 *            JDBC ResultSetMetaData
	 * @param rs
	 *            JDBC ResultSet
	 */
	public void eachRowCallback(ResultSetMetaData meta, ResultSet rs);

	/**
	 * 通知 callback 結束 result each row
	 */
	public void endEachRow();

	/**
	 * 通知 callback 結束 (查無資料)
	 */
	public void endNoRow();

	/**
	 * 通知 callback 結束 (無論有沒有 rows 都一定會執行)
	 */
	public void end();

	/**
	 * 執行SQL時發生錯誤處理
	 * 
	 * @param ex
	 *            例外
	 */
	public void error(Exception ex);
}
